package com.yxh.www.author.service;

import com.yxh.www.author.domain.SmResource;
import com.yxh.www.common.result.Result;
import com.yxh.www.mysql.base.BaseService;

import java.util.List;

/**
 * <p>
 * 系统菜单-RBAC 服务类
 * </p>
 *
 * @author Yangxiaohui
 * @since 2020-05-09
 */
public interface SmResourceService extends BaseService<SmResource> {
    /**
     * 新增系统资源信息
     *
     * @param resourceTitle 资源标题    必填
     * @param resourceIcon  资源图标    非必填
     * @param resourcePath  资源路径    非必填
     * @param parentId      父级ID    非必填 默认 0：根目录
     * @param permissionKey 权限标识    非必填
     * @param resourceType  资源（0：目录；1：菜单；2：按钮）  必填
     * @return 统一响应 {@link Result}
     */
    Result<Object> addSmResource(String resourceTitle, String resourceIcon, String resourcePath, String parentId, String permissionKey, String resourceType);

    /**
     * 修改系统资源
     *
     * @param id             系统资源ID 必填
     * @param resourceTitle  资源标题   非必填
     * @param resourceIcon   资源图标   非必填
     * @param resourcePath   资源路径   非必填
     * @param permissionKey  权限标识   非必填
     * @param resourceStatus 资源状态（0：正常；1：失效）    非必填
     * @param orderNumber    排序编号   非必填
     * @return 统一响应 {@link Result}
     */
    Result<Object> modifySmResource(String id, String resourceTitle, String resourceIcon, String resourcePath, String permissionKey, String resourceStatus, Integer orderNumber);

    /**
     * 根据ID删除系统资源
     *
     * @param ids 资源ID集合
     * @return 统一响应 {@link Result}
     */
    Result<Object> removeSmResource(String[] ids);

    /**
     * 查询系统资源列表
     *
     * @param resourceTitle 资源标题 模糊查询
     * @param resourcePath  资源路径 模糊查询
     * @return 统一响应 {@link Result< List >} 实体 {@link SmResource}
     */
    Result<List<SmResource>> listSmResource(String resourceTitle, String resourcePath);

    /**
     * 分页查询系统资源列表
     *
     * @param resourceTitle 资源标题 模糊查询
     * @param resourcePath  资源路径 模糊查询
     * @param pageNum       页码          默认值 1
     * @param pageSize      页面数据长度    默认值 20
     * @return 统一响应 {@link Result}
     */
    Result<Object> pageSmResource(String resourceTitle, String resourcePath, Long pageNum, Long pageSize);
}
